#ifndef XY_ACTION_H
#define XY_ACTION_H

// 执行动作定义
enum XY_ACTION
{
    XY_ACTION_STOP = 0,
    XY_ACTION_RESET,                            // 1 复位，先复位z，然后复位x，再复位y
    XY_ACTION_PICK_CUP,                         // 2 在 (XYZ) TARGET 1 指定位置拾取测试杯。
    XY_ACTION_RELEASE_CUP,                      // 3 在 (XYZ) TARGET 1 指定位置释放测试杯。
    XY_ACTION_TRANSFER_CUP = 0x0C,              // 12 从 (XYZ) TARGET 1 拾取测试杯，到(XYZ) TARGET 2 释放测试杯。
    XY_ACTION_MOVE_XY,                          // 13 移动到 (XYZ) TARGET 1 指定坐标。
    XY_ACTION_PROBE_LEVEL = 0x12,               // 18 使用抓手检测表面高度。(XY) TARGET1 为 XY 坐标，Z TARGET 1 为 Z 的最大高度。探测后将 Z TARGET 1 设置为探测到的位置。
    XY_ACTION_DISABLE_MOTOR = 0x16,             // 22 解锁电机
    XY_ACTION_MOVE_XYZ_0 = 0x19,                // 25 移动到 (XYZ) TARGET 1 指定坐标
    XY_ACTION_MOVE_XYZ_1 = 0x1A,                // 26 MOVE XYZ 0 别名
    XY_ACTION_MOVE_XYZ_2 = 0x1B,                // 27 MOVE XYZ 0 别名
    XY_ACTION_HOME_YX = 0x1C,                   // 28 先将 Y 移动到光耦遮挡位置，然后将 X移动到光耦遮挡位置。如果 Y 已经在遮挡位置，Y 无动作。如果 X 已经在遮挡位置，X 无动作
    XY_ACTION_HOME_X = 0x1D,                    // 29 只将 X 移动到光耦遮挡位置。如果 X 已经在遮挡位置，X 无动作
    XY_ACTION_DO_MIX = 0x1E,                    // 30 执行涡旋混匀动作。X_TARGET_1高16位为混匀时间。单位: s

    XY_ACTION_RESET_Z,                          // 30 Z复位
    XY_ACTION_MOVE_Z,                           // 31 移动z到目标位置
    XY_ACTION_Z_PICK,                           // 32 z到目标位置抓杯
    XY_ACTION_MOVE_X,                           // 33 x移动
    XY_ACTION_MOVE_Y,                           // 34 y移动
    XY_ACTION_PICK_RELEASE_CUP,                 // 35 抓杯放杯
    XY_ACTION_CLOSE_PICKER,                     // 36 关闭抓手
    XY_ACTION_OPEN_PICKER,                      // 37 打开抓手
};

// 状态定义
enum XY_STATUS
{
    XY_STATUS_X_HOME_SENSOR_ERROR = 1,         // 未检测到X原点传感器
    XY_STATUS_Y_HOME_SENSOR_ERROR,             // 未检测到Y原点传感器
    XY_STATUS_Z_HOME_SENSOR_ERROR,             // 未检测到Z原点传感器
    XY_STATUS_PICKUP_CUP_SENSOR_ERROR,         // 拾取到测试杯(抓杯位置)传感器错误
    XY_STATUS_PICKUP_CUP_ERROR,                // 未拾取到测试杯
    XY_STATUS_RELEASE_CUP_ERROR,               // 释放测试杯错误
    XY_STATUS_Y_LIMIT_SENSOR_ERROR,            // Y限位错误
};

enum M_STATUS
{
    X_STATUS_M_HOME_SENSOR_ERROR = 1,         // 未检测到M原点传感器
};

#endif // XY_ACTION_H
